home *** CD-ROM | disk | FTP | other *** search
- package javax.swing;
-
- import java.awt.Canvas;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Vector;
-
- class SystemEventQueueUtilities$RunnableCanvas extends Canvas {
- private static final Graphics nullGraphics = new SystemEventQueueUtilities.RunnableCanvasGraphics();
- private static Hashtable runnableCanvasTable = new Hashtable(1);
- private Vector runnableEvents = new Vector(2);
- private boolean isRegistered = false;
-
- SystemEventQueueUtilities$RunnableCanvas(JRootPane var1) {
- ((Component)this).setBounds(0, 0, 1, 1);
- if (runnableCanvasTable.get(Thread.currentThread()) == null) {
- try {
- runnableCanvasTable.put(Thread.currentThread(), this);
- runnableCanvasTable.put(SystemEventQueueUtilities.access$2(), this);
- if (SwingUtilities.isEventDispatchThread()) {
- this.isRegistered = true;
- }
- } catch (Exception var3) {
- System.err.println("Can't register RunnableCanvas");
- ((Throwable)var3).printStackTrace();
- }
- }
-
- runnableCanvasTable.put(var1, this);
- this.maybeRegisterEventDispatchThread();
- }
-
- synchronized void addRunnableEvent(SystemEventQueueUtilities.RunnableEvent var1) {
- this.runnableEvents.addElement(var1);
- }
-
- public Graphics getGraphics() {
- return nullGraphics;
- }
-
- public Dimension getPreferredSize() {
- return new Dimension(1, 1);
- }
-
- private synchronized SystemEventQueueUtilities.RunnableEvent[] getRunnableCanvasEvents() {
- int var1 = this.runnableEvents.size();
- if (var1 == 0) {
- return null;
- } else {
- SystemEventQueueUtilities.RunnableEvent[] var2 = new SystemEventQueueUtilities.RunnableEvent[var1];
-
- for(int var3 = 0; var3 < var1; ++var3) {
- var2[var3] = (SystemEventQueueUtilities.RunnableEvent)this.runnableEvents.elementAt(var3);
- }
-
- this.runnableEvents.removeAllElements();
- return var2;
- }
- }
-
- public boolean isShowing() {
- return this.runnableEvents.size() > 0;
- }
-
- static SystemEventQueueUtilities$RunnableCanvas lookup(SystemEventQueueUtilities.RunnableEvent var0) {
- if (var0.doRun instanceof SystemEventQueueUtilities.ComponentWorkRequest) {
- SystemEventQueueUtilities.ComponentWorkRequest var10 = (SystemEventQueueUtilities.ComponentWorkRequest)var0.doRun;
- synchronized(var10){}
-
- SystemEventQueueUtilities$RunnableCanvas var11;
- try {
- JRootPane var13 = SwingUtilities.getRootPane(var10.component);
- if (var13 == null) {
- var10.isPending = false;
- var11 = null;
- return var11;
- }
-
- var11 = (SystemEventQueueUtilities$RunnableCanvas)runnableCanvasTable.get(var13);
- } catch (Throwable var9) {
- throw var9;
- }
-
- return var11;
- } else {
- Object var1 = runnableCanvasTable.get(Thread.currentThread());
- if (var1 != null) {
- return (SystemEventQueueUtilities$RunnableCanvas)var1;
- } else {
- ThreadGroup var2;
- try {
- var2 = Thread.currentThread().getThreadGroup();
- } catch (SecurityException var8) {
- return null;
- }
-
- SystemEventQueueUtilities$RunnableCanvas var3 = (SystemEventQueueUtilities$RunnableCanvas)runnableCanvasTable.get(var2);
- if (var3 == null) {
- Enumeration var4 = runnableCanvasTable.keys();
- if (var4 == null) {
- return null;
- }
-
- while(var4.hasMoreElements()) {
- Object var5 = var4.nextElement();
- if (var5 instanceof JRootPane && ((JRootPane)var5).isShowing()) {
- return (SystemEventQueueUtilities$RunnableCanvas)runnableCanvasTable.get(var5);
- }
- }
- }
-
- return var3;
- }
- }
- }
-
- private void maybeRegisterEventDispatchThread() {
- if (!this.isRegistered) {
- synchronized(this){}
-
- try {
- if (!this.isRegistered && SwingUtilities.isEventDispatchThread()) {
- Thread var3 = Thread.currentThread();
- if (runnableCanvasTable.get(var3) != null) {
- this.isRegistered = true;
- } else {
- runnableCanvasTable.put(var3, this);
- runnableCanvasTable.put(SystemEventQueueUtilities.access$2(), this);
- this.isRegistered = true;
- }
- }
- } catch (Throwable var5) {
- throw var5;
- }
- }
-
- }
-
- public void paint(Graphics var1) {
- this.maybeRegisterEventDispatchThread();
- }
-
- static void postRunnableEventToAll(SystemEventQueueUtilities.RunnableEvent var0) {
- ThreadGroup var2;
- try {
- var2 = (new Thread()).getThreadGroup();
- } catch (SecurityException var7) {
- var2 = null;
- }
-
- SystemEventQueueUtilities$RunnableCanvas var1;
- if (var2 != null) {
- var1 = (SystemEventQueueUtilities$RunnableCanvas)runnableCanvasTable.get(var2);
- } else {
- var1 = null;
- }
-
- Enumeration var3 = runnableCanvasTable.keys();
-
- while(var3.hasMoreElements()) {
- Object var4 = var3.nextElement();
- if (var4 instanceof JRootPane) {
- Object var5 = runnableCanvasTable.get(var4);
- if (var5 != var1) {
- SystemEventQueueUtilities$RunnableCanvas var6 = (SystemEventQueueUtilities$RunnableCanvas)var5;
- var6.addRunnableEvent(var0);
- ((Component)var6).repaint();
- }
- }
- }
-
- }
-
- static void remove(JRootPane var0) {
- SystemEventQueueUtilities$RunnableCanvas var1 = (SystemEventQueueUtilities$RunnableCanvas)runnableCanvasTable.get(var0);
- if (var1 != null) {
- SystemEventQueueUtilities$RunnableCanvas var2 = null;
- JLayeredPane var3 = var0.getLayeredPane();
- ((Container)var3).remove(var1);
- Enumeration var4 = runnableCanvasTable.keys();
-
- while(var4.hasMoreElements()) {
- Object var5 = var4.nextElement();
- Object var6 = runnableCanvasTable.get(var5);
- if (var1 == var6) {
- runnableCanvasTable.remove(var5);
- } else if (var2 == null) {
- var2 = (SystemEventQueueUtilities$RunnableCanvas)var6;
- }
- }
-
- SystemEventQueueUtilities.RunnableEvent[] var9 = var1.getRunnableCanvasEvents();
- int var10 = var9 == null ? 0 : var9.length;
- if (var10 > 0) {
- if (var2 != null) {
- for(int var7 = 0; var7 < var10; ++var7) {
- SystemEventQueueUtilities.RunnableEvent var8 = var9[var7];
- if (var8.doRun instanceof Timer.DoPostEvent) {
- var2.addRunnableEvent(var8);
- }
- }
-
- ((Component)var2).repaint();
- } else {
- for(int var11 = 0; var11 < var10; ++var11) {
- SystemEventQueueUtilities.RunnableEvent var12 = var9[var11];
- if (var12.doRun instanceof Timer.DoPostEvent) {
- ((Timer.DoPostEvent)var12.doRun).getTimer().eventQueued = false;
- }
- }
- }
- }
- }
-
- }
-
- public void update(Graphics var1) {
- SystemEventQueueUtilities.RunnableEvent[] var2 = this.getRunnableCanvasEvents();
- if (var2 != null) {
- for(int var3 = 0; var3 < var2.length; ++var3) {
- SystemEventQueueUtilities.access$1(var2[var3]);
- }
- }
-
- }
- }
-